import Request from "./request";
import { Toast } from "antd-mobile";
const http = new Request();
const proxy = {
  baseUrl: "//60.190.238.5:8080/advance", // 测试环境
};
http.setConfig((config) => {
  return config;
});

/**
 * 自定义验证器，如果返回true 则进入响应拦截器的响应成功函数(resolve)，否则进入响应拦截器的响应错误函数(reject)
 * @param { Number } statusCode - 请求响应体statusCode（只读）
 * @param { Number } resultCode - 请求响应体后端返回 resultCode（只读）
 * @return { Boolean } 如果为true,则 resolve, 否则 reject
 */
http.validateStatus = (statusCode) => {
  return statusCode === 200;
};

http.interceptor.request((config, cancel) => {
  Toast.loading('Loading...', 30, () => {
  });
  /* 请求之前拦截器 */
  config.headers = {
    ...config.headers,
  };
  return config;
});

// 后端状态码
/**
 * NORMAL_ERROR("900000", "通用错误");
 * SUCCESS("000000", "成功"),
 * PARAM_ILLEGAL("900405", "参数不合法"),
 * COMMON_ERROR("900500", "失败"), // 用于Exception
 */
http.interceptor.response(
  (response) => {
    /* 请求之后拦截器 */
    // 延迟隐藏loading，因为数据请求回来以后，还有页面的渲染时间
    setTimeout(() => {
      response.config.isLoading && Toast.hide();
    }, 500);

    if (response.data.code !== '000000') {
      // 服务端返回的状态码不等于100，则reject()
      response.config.noCatch && Toast.info(response.data.data || "请联系服务商-");
      return Promise.reject(response.data);
    }
    // if (response.config.custom.verification) { // 演示自定义参数的作用
    //   return response.data
    // }
    return response.data;
  },
  (err) => {
    Toast.info(err.data || "请求异常-");
    let response = {}

    let errRes = {
      error: err,
      message: err.data || "请求异常-",
      result: "400",
    };
    response.data = errRes;
    return response.data;
  }
);

export { http, proxy };
